// src/utils/auth.js

/**
 * 验证Token有效性
 * @returns {boolean} 是否有效
 */
export const checkToken = () => {
    const token = localStorage.getItem('token')
    
    // 检查token是否存在
    if (!token) {
      return false
    }
    return true
  }
  
  /**
   * 清除Token
   */
export const clearToken = () => {
    localStorage.removeItem('token')
    localStorage.removeItem('token_expire')
    localStorage.removeItem('user_info')
  }
  
  /**
   * 保存Token
   * @param {string} token 
   * @param {number} expire 过期时间戳(秒)
   */
export const saveToken = (token,expire) => {
    localStorage.setItem('token', token)
    localStorage.setItem('token_expire', expire)
  }
  
  /**
   * 保存用户信息
   * @param {object} userInfo 用户信息
   */
export const saveUserInfo = (userInfo) => {
    localStorage.setItem('user_info', JSON.stringify(userInfo))
  }
  
  /**
   * 获取用户信息
   * @returns {object|null} 用户信息对象或null
   */
export const getUserInfo = () => {
    const userInfoStr = localStorage.getItem('user_info')
    if (userInfoStr) {
      try {
        return JSON.parse(userInfoStr)
      } catch (e) {
        console.error('解析用户信息失败:', e)
        return null
      }
    }
    return null
  }
  
  /**
   * 获取用户权限
   * @returns {string} 权限等级
   */
export const getPermission = () => {
    const userInfo = getUserInfo()
    return userInfo?.permission || 'member'
  }
  
  /**
   * 获取用户公司ID
   * @returns {number|null} 公司ID
   */
export const getCompanyId = () => {
    const userInfo = getUserInfo()
    return userInfo?.company_id || null
  }
  
  /**
 * 获取用户职位
 * @returns {string} 职位名称
 */
export const getPosition = () => {
    const userInfo = getUserInfo()
    return userInfo?.position || ''
  }

/**
 * 从服务器获取当前用户信息
 * @returns {Promise<Object>} 用户信息对象
 */
export const fetchUserInfo = async () => {
    try {
      const { get } = await import('@/utils/request')
      const res = await get('/admin/info')
      if (res && res.code === 200 && res.data) {
        // 保存用户信息到localStorage
        saveUserInfo(res.data)
        return res.data
      } else {
        throw new Error('获取用户信息失败')
      }
    } catch (error) {
      console.error('获取用户信息异常:', error)
      throw error
    }
  }